<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta name="viewport" content="width=device-width">

  <title>Ajax starting point</title>

  <style>
    html,
    pre {
      font-family: sans-serif;
    }

    body {
      width: 500px;
      margin: 0 auto;
      background-color: #ccc;
    }

    pre {
      line-height: 1.5;
      letter-spacing: 0.05rem;
      padding: 1rem;
      background-color: greenyellow;
      font: Arial;
    }

    label {
      width: 200px;
      margin-right: 33px;
    }

    select {
      width: 350px;
      padding: 5px;
    }
  </style>
  <!--[if lt IE 9]>
      <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->
</head>

<body>
  <h1>Ajax starting point</h1>

  <form>
    <label for="verse-choose">Choose a verse</label>
    <select id="verse-choose" name="verse-choose">
      <option>Verse 1</option>
      <option>Verse 2</option>
      <option>Verse 3</option>
      <option>Verse 4</option>
    </select>
  </form>

  <h2>The Conqueror Worm,
    <em>Edgar Allen Poe, 1843</em>
  </h2>

  <pre>

  </pre>

  <script>
    var verseChoose = document.querySelector('select');
    var poemDisplay = document.querySelector('pre');

    // Action for changing option
    verseChoose.onchange = function () {
      var verse = verseChoose.value;
      updateDisplay(verse);
    }

    // Update content by XMLHttpRequest or Fetch
    function updateDisplay(verse) {
      verse = verse.replace(" ", "");
      verse = verse.toLowerCase();
      var url = verse + ".txt";

      updateByXMLHttpRequest(url);      
      // updateByFetch(url);

    }

    function updateByXMLHttpRequest(url) {
      var request = new XMLHttpRequest();
      request.open('GET', url);
      request.responseType = 'text';
      request.onload = function () {
        poemDisplay.textContent = request.response;
      };
      request.send();
    }

    function updateByFetch(url) {
      fetch(url).then(function(response) {
        response.text().then(function(text) {
          poemDisplay.textContent = text;
        });
      });
    }

    updateDisplay('Verse 1');
    verseChoose.value = 'Verse 1';
  </script>
</body>

</html>